package com.sg.dto.biz.app.common;

import com.sg.common.dto.BaseDto;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;

import java.io.Serializable;
import java.util.Date;
import java.util.Objects;

/**
 * @desc AchievementDockingDto
 * @使用场景
 */
@Data
public class AchievementDockingDto extends BaseDto implements Serializable {

    /**
     * 对接成果关系ID
     */
    @ApiModelProperty("对接成果关系ID")
    private String achievementDockingId;

    /**
     * 关联成果ID
     */
    @ApiModelProperty("关联成果ID")
    private String achievementId;

    /**
     * 成果等级ID
     */
    @ApiModelProperty("成果等级ID")
    private String achievementGradeId;

    /**
     * 成果等级编号
     */
    @ApiModelProperty("成果等级编号")
    private String achievementGradeNumber;

    /**
     * 成果等级名称
     */
    @ApiModelProperty("成果等级名称")
    private String achievementGradeName;

    /**
     * 是否标志性成果 TRUE:是 FALSE:否
     */
    @ApiModelProperty("是否标志性成果")
    private String isSymbolicAchievement;

    /**
     * 版权归属对象表类型 ORGANIZATION:组织 DEPARTMENT:部门 PERSONAL:个人
     */
    @ApiModelProperty("版权归属对象表类型")
    private String copyrightObjectTypeCode;

    /**
     * 版权归属对象ID
     */
    @ApiModelProperty("版权归属对象ID")
    private String copyrightObjectId;

    /**
     * 版权归属对象名称
     */
    @ApiModelProperty("版权归属对象名称")
    private String copyrightObjectName;

    /**
     * 业绩责任部门ID
     */
    @ApiModelProperty("业绩责任部门ID")
    private String dutyDeptId;

    /**
     * 业绩责任部门名称
     */
    @ApiModelProperty("业绩责任部门名称")
    private String dutyDeptName;
    /**
     * 成果类型ID
     */
    @ApiModelProperty("成果类型ID")
    private String achievementTypeId;

    /**
     * 授予时间
     */
    @ApiModelProperty("授予时间")
    private Date awardedTime;

    /**
     * 归属周期阶段资料ID
     */
    @ApiModelProperty("归属周期阶段资料ID")
    private String cycleStageDataId;

    /**
     * 归属子周期周期ID
     */
    @ApiModelProperty("归属子周期周期ID")
    private String cycleId;

    /**
     * 归属工作目标子周期ID
     */
    @ApiModelProperty("归属工作目标子周期ID")
    private String evaObjTargetCycleId;

    /**
     * 归属目标内容类型编码 PRIMARY_OBJTIVE_LEAD_DEPT:一级指标牵头部门 EVA_SUBJECT:评价对象主体
     */
    @ApiModelProperty("归属目标内容类型编码")
    private String targetCycleContentTypeCode;

    /**
     * 归属目标内容ID
     */
    @ApiModelProperty("归属目标内容ID")
    private String targetCycleContentId;

    /**
     * 冗余一级目标分类ID
     */
    @ApiModelProperty("冗余一级目标分类ID")
    private String rootTargetCategoryId;

    /**
     * 归属评价模板ID
     */
    @ApiModelProperty("归属评价模板ID")
    private String evaluationTemplateId;

    /**
     * 归属评价主题ID
     */
    @ApiModelProperty("归属评价主题ID")
    private String evaluationSubjectId;

    /**
     * 主体生命周期 CURRENTLY_VALID:当前有效 EDITING:正在编辑 ARCHIVING:历史存档
     */
    @ApiModelProperty("主体生命周期")
    private String subjectLifeCycle;
    /**
     * 成果类型编号
     */
    @ApiModelProperty("成果类型编号")
    private String achievementTypeNumber;

    /**
     * 成果类型名称
     */
    @ApiModelProperty("成果类型名称")
    private String achievementTypeName;

    /**
     * 成果类别ID
     */
    @ApiModelProperty("成果类别ID")
    private String achievementCategoryId;

    /**
     * 成果类别编号
     */
    @ApiModelProperty("成果类别编号")
    private String achievementCategoryNumber;

    /**
     * 成果类别名称
     */
    @ApiModelProperty("成果类别名称")
    private String achievementCategoryName;

    /**
     * 更新周期ID
     */
    @ApiModelProperty("更新周期ID")
    private String updateCycleId;

    /**
     * 成果所属主体类型编码 DEPT_TARGET_ROOT:部门目标任务书根节点 PERFORMANCE_EVA_SUBJECT_ROOT:绩效评价对象根节点
     */
    @ApiModelProperty("成果所属主体类型编码")
    private String achievementBelongBodyTypeCode;

    /**
     * 成果所属主体ID
     */
    @ApiModelProperty("成果所属主体ID")
    private String achievementBelongBodyId;

    /**
     * 操作人就职记录ID
     */
    @ApiModelProperty("操作人就职记录ID")
    private String operationInductionId;

    /**
     * 操作时间
     */
    @ApiModelProperty("操作时间")
    private Date operateTime;

    /**
     * 创建时间
     */
    @ApiModelProperty("创建时间")
    private Date createTime;
    /**
     * 冗余一级指标ID
     */
    @ApiModelProperty("冗余一级指标ID")
    private String rootObjectiveId;
    /**
     * 任务名称
     */
    @ApiModelProperty("任务名称")
    private String taskName;
    /**
     * 成果编号
     */
    @ApiModelProperty("成果编号")
    private String achievementNumber;

    /**
     * 成果名称
     */
    @ApiModelProperty("成果名称")
    private String achievementName;

    /**
     * 相关文号
     */
    @ApiModelProperty("相关文号")
    private String relatedDocument;

    /**
     * 授予单位
     */
    @ApiModelProperty("授予单位")
    private String awardedUnit;

    /**
     * 有效期结束时间
     */
    @ApiModelProperty("有效期结束时间")
    private Date validEndTime;
    /**
     * 成果介绍
     */
    @ApiModelProperty("成果介绍")
    private String achievementDesc;
    /**
     * 文档关系ID
     */
    @ApiModelProperty("文档关系ID")
    private String unstructuredDataRelationshipId;

    /**
     * 文档ID
     */
    @ApiModelProperty("文档ID")
    private String unstructuredDataId;

    /**
     * 主题内容ID
     */
    @ApiModelProperty("主题内容ID")
    private String themeContentId;

    /**
     * 文档编号
     */
    @ApiModelProperty("文档编号")
    private String unstructuredDataNumber;

    /**
     * 文档名称
     */
    @ApiModelProperty("文档名称")
    private String unstructuredDataName;

    /**
     * 文档后缀
     */
    @ApiModelProperty("文档后缀")
    private String postfix;

    /**
     * 文件大小
     */
    @ApiModelProperty("文件大小")
    private String fileSize;

    /**
     * 文件相对路径地址
     */
    @ApiModelProperty("文件相对路径地址")
    private String fileRelativePathAccess;

    /**
     * 文件全路径地址
     */
    @ApiModelProperty("文件全路径地址")
    private String fileRelativeAllPathAccess;

    /**
     * 文档明细类型 WORD:WORD文档 EXCEL:EXCEL文档 PDF:PDF文档
     */
    @ApiModelProperty("文档明细类型")
    private String unstructuredDataDetailType;

    /**
     * 是否支持预览 TRUE:是 FALSE:否
     */
    @ApiModelProperty("是否支持预览")
    private String isSupportPreview;

    /**
     * 是否来自个人网盘文件 TRUE:是 FALSE:否
     */
    @ApiModelProperty("是否来自个人网盘文件")
    private String isUserUpload;

    /**
     * 文件夹ID
     */
    @ApiModelProperty("文件夹ID")
    private String unstructuredDataFolderId;

    /**
     * 排序
     */
    @ApiModelProperty("排序")
    private Long orderNumber;

    /**
     * 创建人就职记录ID
     */
    @ApiModelProperty("创建人就职记录ID")
    private String createInductionId;

    @Override
    public boolean equals(Object o) {
        if (this == o) return true;
        if (o == null || getClass() != o.getClass()) return false;
        if (!super.equals(o)) return false;
        AchievementDockingDto that = (AchievementDockingDto) o;
        return achievementDockingId == that.achievementDockingId && achievementId == that.achievementId && achievementGradeId == that.achievementGradeId && achievementGradeNumber == that.achievementGradeNumber && achievementGradeName == that.achievementGradeName && isSymbolicAchievement == that.isSymbolicAchievement && copyrightObjectTypeCode == that.copyrightObjectTypeCode && copyrightObjectId == that.copyrightObjectId && copyrightObjectName == that.copyrightObjectName && dutyDeptId == that.dutyDeptId && dutyDeptName == that.dutyDeptName && achievementTypeId == that.achievementTypeId && awardedTime == that.awardedTime && cycleStageDataId == that.cycleStageDataId && cycleId == that.cycleId && evaObjTargetCycleId == that.evaObjTargetCycleId && targetCycleContentTypeCode == that.targetCycleContentTypeCode && targetCycleContentId == that.targetCycleContentId && rootTargetCategoryId == that.rootTargetCategoryId && evaluationTemplateId == that.evaluationTemplateId && evaluationSubjectId == that.evaluationSubjectId && subjectLifeCycle == that.subjectLifeCycle && achievementTypeNumber == that.achievementTypeNumber && achievementTypeName == that.achievementTypeName && achievementCategoryId == that.achievementCategoryId && achievementCategoryNumber == that.achievementCategoryNumber && achievementCategoryName == that.achievementCategoryName && updateCycleId == that.updateCycleId && achievementBelongBodyTypeCode == that.achievementBelongBodyTypeCode && achievementBelongBodyId == that.achievementBelongBodyId && operationInductionId == that.operationInductionId && operateTime == that.operateTime && createTime == that.createTime && rootObjectiveId == that.rootObjectiveId && taskName == that.taskName && achievementNumber == that.achievementNumber && achievementName == that.achievementName && relatedDocument == that.relatedDocument && awardedUnit == that.awardedUnit && validEndTime == that.validEndTime && achievementDesc == that.achievementDesc && unstructuredDataRelationshipId == that.unstructuredDataRelationshipId && unstructuredDataId == that.unstructuredDataId && themeContentId == that.themeContentId && unstructuredDataNumber == that.unstructuredDataNumber && unstructuredDataName == that.unstructuredDataName && postfix == that.postfix && fileSize == that.fileSize && fileRelativePathAccess == that.fileRelativePathAccess && fileRelativeAllPathAccess == that.fileRelativeAllPathAccess && unstructuredDataDetailType == that.unstructuredDataDetailType && isSupportPreview == that.isSupportPreview && isUserUpload == that.isUserUpload && unstructuredDataFolderId == that.unstructuredDataFolderId && orderNumber == that.orderNumber && createInductionId == that.createInductionId;
    }

    @Override
    public int hashCode() {
        return Objects.hash(super.hashCode(), achievementDockingId, achievementId, achievementGradeId, achievementGradeNumber, achievementGradeName, isSymbolicAchievement, copyrightObjectTypeCode, copyrightObjectId, copyrightObjectName, dutyDeptId, dutyDeptName, achievementTypeId, awardedTime, cycleStageDataId, cycleId, evaObjTargetCycleId, targetCycleContentTypeCode, targetCycleContentId, rootTargetCategoryId, evaluationTemplateId, evaluationSubjectId, subjectLifeCycle, achievementTypeNumber, achievementTypeName, achievementCategoryId, achievementCategoryNumber, achievementCategoryName, updateCycleId, achievementBelongBodyTypeCode, achievementBelongBodyId, operationInductionId, operateTime, createTime, rootObjectiveId, taskName, achievementNumber, achievementName, relatedDocument, awardedUnit, validEndTime, achievementDesc, unstructuredDataRelationshipId, unstructuredDataId, themeContentId, unstructuredDataNumber, unstructuredDataName, postfix, fileSize, fileRelativePathAccess, fileRelativeAllPathAccess, unstructuredDataDetailType, isSupportPreview, isUserUpload, unstructuredDataFolderId, orderNumber, createInductionId);
    }

}
